package bdqn.hfxt;

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        /**
         * Java代码结构
         * 1）顺序结构
         *      按照从上到下的顺序执行，全都会执行
         * 2）选择结构
         *      根据条件判断，结果为true才会执行，否则不执行
         * 3）循环结构
         *      重复执行代码
         *
         * 选择结构：
         *      根据条件判断，选择执行的语句。不是所有代码都会执行！默认只会执行一个分支！
         * 分类：
         *    1）if结构
         *    2）switch结构
         *    3）三元(选择)表达式
         *
         * if结构：
         * 语法一：
         *      if(返回布尔类型的表达式){
         *            表达式结果为true，执行此处代码
         *      }
         *      注意：条件满足为true才执行{}内语句，不满足什么都不做
         *           条件可以写很复杂(表达式很多)，只要保证结果为布尔类型即可
         * 语法二：
         *     if(返回布尔类型的表达式){
         *         表达式结果为true，执行此处代码
         *     }else{
         *         表达式结果为false，执行此处代码
         *     }
         *     注意：else没有()，但是不代表没有条件。条件是if条件的相反条件
         *          else可以没有，有且仅有一个，写在最后
         * 语法三：
         *     if(返回布尔类型的表达式一){
         *          表达式一结果为true，执行此处代码
         *     }else if(返回布尔类型的表达式二){
         *         表达式二结果为true，执行此处代码
         *     }else{
         *         以上条件均为false，执行此处代码
         *     }
         *     注意：if有且仅有一个写在第一位
         *          else if可以有多个，顺序可以调整，但结果可能会影响
         *                当条件判断是等值判断不影响结果
         *                当条件判断是范围判断影响结果
         *          else可以没有，有且仅有一个写在最后
         *          有多个条件，条件不要有重叠覆盖关系
         *          多条件判断写法，推荐按照：1）使用>，数据按照从大到小判断；2）使用<，数据按照从小到大判断
         *          最后一个条件改为else的原因：推理出来的最终条件和已知条件一致
         *          多从if按照从上到下的顺序依次判断，不会跳着判断
         *
         *  语法四：
         *       嵌套if：在任意if结构的{}内嵌套另一个完整的if结构
         *       语法：
         *           if(返回布尔类型表达式一){
         *               if(返回布尔类型表达式二){
         *                   表达式1为true并且表达式2为true，执行此处代码
         *               }
         *           }
         *        注意：同时满足if自己条件和包着它的外面结构条件都为true，才会执行
         *        使用场景：当条件判断较多，且有先决条件(先满足的条件)时，考虑使用嵌套if
         *  注意：
         *      当if结构的执行语句只有一条时，{}可省略，但不推荐。
         *      以上规则低于if结构的规则要求：else不能单独出现，紧跟着最近的if
         *
         * switch结构：
         *     常用于等值判断。
         *     语法：
         *         switch(返回int/char/String类型的表达式){
         *          case 常量:
         *              执行语句
         *              //break;
         *          case 常量:
         *              执行语句
         *              break;
         *          default:
         *              执行语句
         *              //break;
         *          case 常量:
         *              执行语句
         *              break;
         *         }
         *     执行流程：
         *        1）判断表达式
         *        2）从上到下找与表达式结果相等的case常量，
         *              如果找到了case，从该case开始执行，一直执行到break结束[没遇到break会无条件继续往下执行]
         *              如果找不到case，找default，找到从default，从上到下开始执行，一直执行到break结束[没遇到break会无条件继续往下执行]
         *                            找不到default，什么都不做
         *     注意：
         *         在JDK1.7+版本才能使用String类型
         *         case可以有多个，顺序可以条件，结果可能会改变
         *              当每一个分支都由break，不影响结果
         *              当分支没有break，会影响结果
         *         default可以没有，如果有且只有一个。顺序可以调整。
         *         常量类型必须和表达式类型保持一致(至少相兼容能做自动类型转换)!
         *         常量值不能重复
         *         最后一个分支的break可省略，效果不变。
         *
         *  三元(选择)表达式：
         *        当条件判断为true返回指定值；当条件为false返回另一个指定值。
         *   语法：
         *        返回布尔类型的表达式 ?  第一个值 : 第二个值;
         *   注意：
         *       三元表达式的冒号两边值的类型和结果类型，三者必须一致；至少要相兼容。
         *       三元表达式冒号两边写的是能返回的值，不是逻辑代码[特例：自增自减运算运算符再计算完后还能返回结果]
         *
         *  流程图：
         *      使用图形的方式描述代码的流程。
         *  常用图形：
         *      圆角矩形：表示程序的开始和结束
         *      直角矩形：表示每一个执行代码步骤
         *      菱形：表示逻辑判断
         *      平行四边形：表示输入输出语句
         *      带箭头连接线：表示流程方向
         */

        //if案例一
        //张浩Java成绩大于90分，老师奖励他iPhone6s
        //从控制台输入真实分数
        //写和标准90分做比较的条件判断
        //条件判断为true，才会执行输出
        Scanner input = new Scanner(System.in);
        /*
        System.out.println("请输入张浩Java成绩");
        int javaScore = input.nextInt();
        if(javaScore > 90 ){
            System.out.println("老师口头奖励他!");
        }
        */
        //if案例二
        //张浩Java成绩大于90分，并且音乐成绩大于80分时，
        //或者 Java成绩等于100分，音乐成绩大于70分时，
        //老师奖励他
        /*
        System.out.println("请输入张浩Java成绩");
        int javaScore = input.nextInt();
        System.out.println("请输入张浩Music成绩");
        int musicScore = input.nextInt();
        if( (javaScore > 90 && musicScore > 80) || (javaScore == 100 && musicScore > 70) ){
            System.out.println("老师口头表扬他!");
        }
        */

        //if案例三
        //如果张浩Java考试成绩大于90分，老师就奖励他一个iPhone6s
        // 否则老师就罚他蹲马步
        /*
        System.out.println("请输入张浩Java成绩");
        int javaScore = input.nextInt();
        if(javaScore > 90){
            System.out.println("老师口头表扬他!");
        }else{//隐藏条件：javaScore <= 90
            System.out.println("老师罚他蹲马步!");
        }
        */
        /*
        System.out.println("请输入张浩Java成绩");
        int javaScore = input.nextInt();
        System.out.println("请输入张浩Music成绩");
        int musicScore = input.nextInt();
        if( (javaScore > 90 && musicScore > 80) || (javaScore == 100 && musicScore > 70) ){
            System.out.println("老师口头表扬他!");
        }else{//隐藏条件：!((javaScore > 90 && musicScore > 80) || (javaScore == 100 && musicScore > 70))
              //隐藏条件：javaScore<=90 || musicScore<=80  || javaScore !=100 || musicScore<=70
            System.out.println("老师罚他蹲马步!");
        }
        */

        //if案例三
        //对学员的考试成绩评测
        //成绩>=90 ：优秀
        //成绩>=80 ：良好
        //成绩>=60 ：及格
        //成绩<60  ：差
//        System.out.println("请输入张浩Java成绩");
//        int javaScore = input.nextInt();
        /*
        if(javaScore >= 90){
            System.out.println("优秀！");
        }else if(javaScore >= 80){//隐藏条件：javaScore< 90 && javaScore >= 80
            System.out.println("良好！");
        }else if(javaScore >= 60){//隐藏条件：javaScore< 90 && javaScore< 80 && javaScore >= 60
            System.out.println("及格！");
        }
        else if(javaScore < 60){//隐藏条件：javaScore< 90 && javaScore< 80 && javaScore< 60 ==> javaScore< 60
            System.out.println("不及格！");
        }
        else{//隐藏条件：javaScore<=60
            System.out.println("不及格！");
        }
        */
        /*
        if(javaScore >= 90){
            System.out.println("优秀！");
        }else if(javaScore >= 60){//隐藏条件：javaScore< 90 && javaScore< 80 && javaScore >= 60
            System.out.println("及格！");
        }else if(javaScore >= 80){//隐藏条件：javaScore< 90 && javaScore >= 80
            System.out.println("良好！");
        }
        else if(javaScore < 60){//隐藏条件：javaScore< 90 && javaScore< 80 && javaScore< 60 ==> javaScore< 60
            System.out.println("不及格！");
        }
        */
        /*
        if(javaScore == 90){
            System.out.println("优秀！");
        }else if(javaScore == 60){//隐藏条件：javaScore< 90 && javaScore< 80 && javaScore >= 60
            System.out.println("及格！");
        }else if(javaScore == 80){//隐藏条件：javaScore< 90 && javaScore >= 80
            System.out.println("良好！");
        }
        */

        //年龄在0-6之间  属于婴幼儿
        //年龄在7-17之间 属于青少年
        //年龄在18-30之间 属于青年
        //年龄在31-65之间 属于中年
        //年龄在65+之间 属于老年

        //案例四：
        //学校田径短跑运动会，跑进10秒进决赛，跑不进就淘汰
        //进入决赛后根据号码分场次[10号及以前属于第一场，10号以后属于第二场]
        /*
        System.out.println("请输入比赛耗时：");
        double time = input.nextDouble();
        System.out.println("请输入号码：");
        int num = input.nextInt();
        //判断进决赛
        if(time < 10 ){//进决赛
            if(num <= 10){
                System.out.println("第一场比赛");
            }else{
                System.out.println("第二场比赛");
            }
        }else{
            System.out.println("淘汰！");
        }

        //票价受季节影响：旺季、淡季、优惠季
        //票价受舱位影响：头等舱、经济舱
        */

//        int num = 1;
//        if(num > 5)
//        System.out.println("大于");
//        System.out.println("123");

//        int n1 = 1;
//        int n2 = 2;
//        int n3 = 3;
//        if (n2 > n1)
//        System.out.println('A');//会
//        if(n3>n2)
//        System.out.println("B");//会
//        else
//        System.out.println("C");//包含在else
//        System.out.println("D");//会

        /*
        if (n2 < n1)
        System.out.println('A');
        else
        if(n1<n3)
        System.out.println("B");
        else
        System.out.println("C");
        */

        //案例五：
        //模拟电话快速拨号：1拨打爸爸号码  2拨打妈妈号码
        /*
        System.out.println("请输入按键：");
        int num = input.nextInt();
        switch(num){
            default:
                System.out.println("无效");
                //break;
            case 2:
                System.out.println("拨打妈妈号码");
                break;
            case 1:
                System.out.println("拨打爸爸号码");
                break;
        }
        */

        //三元表达式
        int num = 1;
        //String str = num > 5 ? "大于" : "不大于";
        int shu = num > 5 ? num++ : num--;
        //String str = num > 5 ? System.out.println(1) : System.out.println(2);
    }
}
